package com.iot.inclinometer.ui;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Environment;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.iot.inclinometer.R;
import com.iot.inclinometer.dao.IBaseInfoDao;
import com.iot.inclinometer.dao.ICorrectDataInfoDao;
import com.iot.inclinometer.dao.IDataInfoDao;
import com.iot.inclinometer.dao.IObserveInfoDao;
import com.iot.inclinometer.dao.impl.BaseInfoDaoImpl;
import com.iot.inclinometer.dao.impl.CorrectDataInfoDaoImpl;
import com.iot.inclinometer.dao.impl.DataInfoDaoImpl;
import com.iot.inclinometer.dao.impl.ObserveInfoDaoImpl;
import com.iot.inclinometer.pojo.BaseInfo;
import com.iot.inclinometer.pojo.CorrectDataInfo;
import com.iot.inclinometer.pojo.DataInfo;
import com.iot.inclinometer.pojo.ObserveInfo;
import com.iot.inclinometer.util.BaseUtil;
import com.iot.inclinometer.util.Common;
import com.iot.inclinometer.util.ContextApplication;
import com.iot.inclinometer.util.JXLCreateMore;

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * “导出更多”页面(可导出包含角度的数据)
 * 
 * @author WXR
 * 
 */
public class OutputMoreProUI extends Activity{
		
	public static final int FILE_RESULT_CODE = 1;
	private String model=null;    //产品型号
	
	private final String MEASURE_ANGLE_0="A0方向";
	private final String MEASURE_ANGLE_180="A180方向";
	
	private TextView titleView;		//显示标题(产品型号)
	/**文件夹目录编辑框*/
	private EditText file_edit = null;
	/**选择文件夹按钮*/
	private Button selectFileBtn = null;
	/** 按全部公程导出 */
	private Button outputAllProjectBtn = null;
	/** 按工程名导出 */
	private Button outputByProjectNameBtn = null;
	/** 按工点名导出 */
	private Button outputByItemNameBtn = null;
	/** 按钻孔编号导出 */
	private Button outputByDrillNumBtn = null;
	/** 返回设置页面按钮*/
	private Button backBtn = null;

	/** 按钻孔编号导出三级联动下拉菜单中的一级菜单 */
	private Spinner projectNameSp = null;
	/** 按钻孔编号导出三级联动下拉菜单中的二级菜单 */
	private Spinner itemNameSp = null;
	/** 按钻孔编号导出三级联动下拉菜单中的三级菜单 */
	private Spinner drillNumSp = null;

	private ArrayAdapter<String> projectAdapter = null;

	private ArrayAdapter<String> itemAdapter = null;

	private ArrayAdapter<String> drillAdapter = null;
	
	private InputMethodManager inputMethodManager;       //控制键盘隐藏

	private IBaseInfoDao baseInfoDao = new BaseInfoDaoImpl(this);
	private IObserveInfoDao observeInfoDao = new ObserveInfoDaoImpl(this);
	private IDataInfoDao dataInfoDao = new DataInfoDaoImpl(this);
	private ICorrectDataInfoDao correctDataInfoDao = new CorrectDataInfoDaoImpl(this);
	//创建一个定长线程池，可控制线程最大并发数，超出的线程会在队列中等待
	private ExecutorService fixedThreadPool = Executors.newFixedThreadPool(4);

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		super.onCreate(savedInstanceState);		
		setContentView(R.layout.output_more_pro_activity);
		inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
		SharedPreferences sharedPreferences= ContextApplication.getAppContext().getSharedPreferences("configuration",0);
		model=sharedPreferences.getString("Model","");
		initView();		
		setBtnListener();
		initMenu();
	}
    /*
     * 初始化控件
     * */
	private void initView() {	
		titleView=(TextView) findViewById(R.id.tv_top_title); 	//初始化标题
		titleView.setText(titleView.getText() + (Common.isEmpty(model) ? "" : "(" + model + ")"));
		
		// 初始化主界面中的按钮和输入控件		
		file_edit = (EditText) findViewById(R.id.file_edit);
		if(getSharedPreferences("defaultFilePathMore",0).getString("Path","").equals(""))
		{
			SharedPreferences sharedPreferences=getSharedPreferences("defaultFilePathMore",0);
			sharedPreferences.edit()
				.putString("Path",getSDPath(OutputMoreProUI.this)+ File.separator +"久感测斜包含角度导出")
				.commit();
			file_edit.setText(sharedPreferences.getString("Path",null));
		}
		else{
			SharedPreferences sharedPreferences=getSharedPreferences("defaultFilePathMore",0);
			file_edit.setText(sharedPreferences.getString("Path",null));
		}
		
		selectFileBtn=(Button)findViewById(R.id.select_file_btn);
		
		outputAllProjectBtn=(Button)findViewById(R.id.output_all_project_btn);
		outputByProjectNameBtn=(Button)findViewById(R.id.output_by_project_btn);
		outputByItemNameBtn=(Button)findViewById(R.id.output_by_item_btn);
		outputByDrillNumBtn = (Button) findViewById(R.id.output_by_drill_btn);
		backBtn=(Button)findViewById(R.id.exit_btn);

		projectNameSp = (Spinner) findViewById(R.id.project_name_spinner);
		itemNameSp = (Spinner) findViewById(R.id.item_name_spinner);
		drillNumSp = (Spinner) findViewById(R.id.drill_num_spinner);
	}
    /*
     * 设置按钮的点击监听
     * */
	private void setBtnListener() {
		
		selectFileBtn.setOnClickListener(new OnClickListener() {			     
			public void onClick(View v) {
				Intent intent = new Intent(OutputMoreProUI.this,MyFileManager.class);
				startActivityForResult(intent, FILE_RESULT_CODE);
			}
		});		 
       
		projectNameSp.setOnItemSelectedListener(new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				try {
					outputAllProjectBtn.setEnabled(true);
					outputByProjectNameBtn.setEnabled(true);
					outputByItemNameBtn.setEnabled(true);
					outputByDrillNumBtn.setEnabled(true);
					initMenu2();
					initMenu3();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}

			@Override
			public void onNothingSelected(AdapterView<?> parent) {

			}
		});
		itemNameSp.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				try {
					outputByItemNameBtn.setEnabled(true);
					outputByDrillNumBtn.setEnabled(true);
					initMenu3();
				} catch (Exception exception) {
					exception.printStackTrace();
				}
			}

			@Override
			public void onNothingSelected(AdapterView<?> parent) {

			}
		});
		drillNumSp.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				try {			
					outputByDrillNumBtn.setEnabled(true);
				} catch (Exception exception) {
					exception.printStackTrace();
				}
			}

			@Override
			public void onNothingSelected(AdapterView<?> parent) {

			}
		});
		file_edit.addTextChangedListener(new TextWatcher() {
			//监听文件夹路径变化，有变化时，使四个导出按钮可用
				@Override
				public void onTextChanged(CharSequence s, int start, int before,
						int count) {
				}
				@Override
				public void beforeTextChanged(CharSequence s, int start, int count,
						int after) {
				}
				@Override
				public void afterTextChanged(Editable s) {
					outputAllProjectBtn.setEnabled(true);
					outputByProjectNameBtn.setEnabled(true);
					outputByItemNameBtn.setEnabled(true);
					outputByDrillNumBtn.setEnabled(true);
				}

			});
		// 四个导出按钮的事件监听
		outputAllProjectBtn.setOnClickListener(outputAllProjectClickListener);
		outputByProjectNameBtn.setOnClickListener(outputByProjectNameClickListener);
		outputByItemNameBtn.setOnClickListener(outputByItemNameClickListener);
		outputByDrillNumBtn.setOnClickListener(outputByDrillClickListener);
		//返回设置页面按钮的事件监听
		backBtn.setOnClickListener(new OnClickListener() {	
			@Override
			public void onClick(View v) {
				OutputMoreProUI.this.finish();
			}
		});		
	}

	/**
	 * 按全部工程导出数据
	 */
	private OnClickListener outputAllProjectClickListener = new OnClickListener() {
		@Override
		public void onClick(View v) { 
			String filePath = file_edit.getText().toString().trim();
			List<BaseInfo> all = baseInfoDao.selectBaseInfos();
			int flag1=0,flag2=0;           //标志flag1==0全部为空，flag2==1部分为空
			Long start = System.currentTimeMillis();
			
			if(BaseUtil.isEmpty(filePath,OutputMoreProUI.this)){							
				for (BaseInfo baseInfo : all) {
					List<ObserveInfo> observeInfos = observeInfoDao
							.selectObserverInfos(baseInfo.getBaseId());
					if (observeInfos.size() < 1) {
						flag2=1;
					} else {
						flag1=1;
						for (ObserveInfo observeInfo : observeInfos) {
							//A0方向、A180方向的观测数据都需导出
							//根据A0方向的ob_id导出相应修正数据的文件
							//设置中的更多导出功能中，导出A0θxoz（°）、B0θyoz（°）、A180θxoz（°）、B180θyoz（°）、
							//θA方向	、θB方向	、主滑累计位移、次滑累计位移图、合成方向累计位移
							if(observeInfo.getMeasurecount().equals(MEASURE_ANGLE_0)){
								int count=observeInfo.getCount();
								ObserveInfo observeInfo180=observeInfoDao.selectObserveInfo(MEASURE_ANGLE_180,baseInfo.getBaseId(),count);
								int ob_id0=observeInfo.getObserveId();//A0方向的ob_id
								int ob_id180=observeInfo180.getObserveId();//A180方向的ob_id
								
								List<DataInfo> dataInfoList0 = dataInfoDao.selectDataInfos(ob_id0);
								List<DataInfo> dataInfoList180 = dataInfoDao.selectDataInfos(ob_id180);
								List<CorrectDataInfo> correctDataInfoList = correctDataInfoDao.selectDataInfos(ob_id0);
								if(count==1){
									//如果是第一次观测，且有修正观测数据，设置三种位移值都为0
									if(correctDataInfoList.size()>0){
										for(CorrectDataInfo correctDataInfo:correctDataInfoList){
											correctDataInfo.setLx("0");
											correctDataInfo.setLy("0");
											correctDataInfo.setError("0");
										}
									}
								}
								JXLCreateMore jxCreateMore = new JXLCreateMore(filePath,baseInfo,
										observeInfo, dataInfoList0,dataInfoList180,correctDataInfoList,OutputMoreProUI.this);
								fixedThreadPool.execute(jxCreateMore);
							}
						}
						SharedPreferences sharedPreferences=getSharedPreferences("defaultFilePathMore",0);
						sharedPreferences.edit().putString("Path", filePath).commit();
					}				
				}
				Long end = System.currentTimeMillis();
				Log.i("info", "时间-->"+(end-start));
				if(flag1==0){
					showMsg("导出失败！全部工程中的全部孔都没有数据！");
				}else{
					outputAllProjectBtn.setEnabled(false);
					if(flag2==1){
						showMsg("导出成功！但全部工程中存在没有数据的孔！");
					}
					else{
						showMsg("导出成功！");
					}
				}
			}else
			{	// 弹出吐司，表示导出失败
				Toast.makeText(OutputMoreProUI.this, "导出失败！",
						Toast.LENGTH_LONG).show();
			}
		}
	};

	
	/**
	 * 导出一个项目中的所有数据
	 */
	private OnClickListener outputByProjectNameClickListener = new OnClickListener() {
		@Override
		public void onClick(View v) {
			String filePath = file_edit.getText().toString().trim();
			if(projectNameSp.getSelectedItem()==null){
				showMsg("工程为空，导出失败！");
			}else{
			String _projectName=projectNameSp.getSelectedItem()
					.toString();
			List<BaseInfo> all = baseInfoDao.selectBaseInfos(_projectName);
			int flag1=0,flag2=0;           //标志flag1==0全部为空，flag2==1部分为空
			if(BaseUtil.isEmpty(filePath,OutputMoreProUI.this)){	
				for (BaseInfo baseInfo : all) {
					List<ObserveInfo> observeInfos = observeInfoDao
							.selectObserverInfos(baseInfo.getBaseId());
					if (observeInfos.size() < 1) {
						flag2=1;
					} else {
						flag1=1;
						for (ObserveInfo observeInfo : observeInfos) {
							//A0方向、A180方向的观测数据都需导出
							//根据A0方向的ob_id导出相应修正数据的文件
							//设置中的更多导出功能中，导出A0θxoz（°）、B0θyoz（°）、A180θxoz（°）、B180θyoz（°）、
							//θA方向	、θB方向	、主滑累计位移、次滑累计位移图、合成方向累计位移
							if(observeInfo.getMeasurecount().equals(MEASURE_ANGLE_0)){
								int count=observeInfo.getCount();
								ObserveInfo observeInfo180=observeInfoDao.selectObserveInfo(MEASURE_ANGLE_180,baseInfo.getBaseId(),count);
								int ob_id0=observeInfo.getObserveId();//A0方向的ob_id
								int ob_id180=observeInfo180.getObserveId();//A180方向的ob_id
								
								List<DataInfo> dataInfoList0 = dataInfoDao.selectDataInfos(ob_id0);
								List<DataInfo> dataInfoList180 = dataInfoDao.selectDataInfos(ob_id180);
								List<CorrectDataInfo> correctDataInfoList = correctDataInfoDao.selectDataInfos(ob_id0);
								if(count==1){
									//如果是第一次观测，且有修正观测数据，设置三种位移值都为0
									if(correctDataInfoList.size()>0){
										for(CorrectDataInfo correctDataInfo:correctDataInfoList){
											correctDataInfo.setLx("0");
											correctDataInfo.setLy("0");
											correctDataInfo.setError("0");
										}
									}
								}
								JXLCreateMore jxCreateMore = new JXLCreateMore(filePath,baseInfo,
										observeInfo, dataInfoList0,dataInfoList180,correctDataInfoList,OutputMoreProUI.this);
								new Thread(jxCreateMore).start();
							}
						}
						SharedPreferences sharedPreferences=getSharedPreferences("defaultFilePathMore",0);
						sharedPreferences.edit().putString("Path", filePath).commit();
						outputByProjectNameBtn.setEnabled(false);
					}
				}
				if(flag1==0){
					showMsg("导出失败！此工程中的所有孔都没有数据！");
				}else
					if(flag2==1){
						showMsg("导出成功！但此工程中存在没有数据的孔！");
					}
					else{
						showMsg("导出成功！");
					}
			}else
			{	// 弹出吐司，表示导出失败
				Toast.makeText(OutputMoreProUI.this, "导出失败！",
						Toast.LENGTH_LONG).show();
			}
			}
		}
	};
	/**
	 * 导出一个项目中的一个工点的所有数据
	 */
	private OnClickListener outputByItemNameClickListener = new OnClickListener() {
		@Override
		public void onClick(View v) {
			/*
			 * 取出数据的过程： 1.通过两个参数选出唯一的钻孔编号的记录ID-base_id 2.通过base_id选出所有的观察记录的集合
			 * List<ObserveInfo> 3.解析观察记录集合，一个一个的将对应的文件输出（每个ob_id对应了一组数据，有可能为空）
			 */	
			String filePath = file_edit.getText().toString().trim();
			if(projectNameSp.getSelectedItem()==null){
				showMsg("工程为空，导出失败！");
			}else{
			String _projectName = projectNameSp.getSelectedItem().toString();
			String _itemName = itemNameSp.getSelectedItem().toString();
			List<BaseInfo> all = baseInfoDao.selectBaseInfos(_projectName,_itemName);
			int flag1=0,flag2=0;           //标志flag1==0全部为空，flag2==1部分为空
			if(BaseUtil.isEmpty(filePath,OutputMoreProUI.this)){	
				for (BaseInfo baseInfo : all) {
					List<ObserveInfo> observeInfos = observeInfoDao
							.selectObserverInfos(baseInfo.getBaseId());
					if (observeInfos.size() < 1) {
						flag2=1;
					} else {
						flag1=1;
						for (ObserveInfo observeInfo : observeInfos) {
							//A0方向、A180方向的观测数据都需导出
							//根据A0方向的ob_id导出相应修正数据的文件
							//设置中的更多导出功能中，导出A0θxoz（°）、B0θyoz（°）、A180θxoz（°）、B180θyoz（°）、
							//θA方向	、θB方向	、主滑累计位移、次滑累计位移图、合成方向累计位移
							if(observeInfo.getMeasurecount().equals(MEASURE_ANGLE_0)){
								int count=observeInfo.getCount();
								ObserveInfo observeInfo180=observeInfoDao.selectObserveInfo(MEASURE_ANGLE_180,baseInfo.getBaseId(),count);
								int ob_id0=observeInfo.getObserveId();//A0方向的ob_id
								int ob_id180=observeInfo180.getObserveId();//A180方向的ob_id
								
								List<DataInfo> dataInfoList0 = dataInfoDao.selectDataInfos(ob_id0);
								List<DataInfo> dataInfoList180 = dataInfoDao.selectDataInfos(ob_id180);
								List<CorrectDataInfo> correctDataInfoList = correctDataInfoDao.selectDataInfos(ob_id0);
								if(count==1){
									//如果是第一次观测，且有修正观测数据，设置三种位移值都为0
									if(correctDataInfoList.size()>0){
										for(CorrectDataInfo correctDataInfo:correctDataInfoList){
											correctDataInfo.setLx("0");
											correctDataInfo.setLy("0");
											correctDataInfo.setError("0");
										}
									}
								}
								JXLCreateMore jxCreateMore = new JXLCreateMore(filePath,baseInfo,
										observeInfo, dataInfoList0,dataInfoList180,correctDataInfoList,OutputMoreProUI.this);
								new Thread(jxCreateMore).start();
							}
						}
						SharedPreferences sharedPreferences=getSharedPreferences("defaultFilePathMore",0);
						sharedPreferences.edit().putString("Path", filePath).commit();
						outputByItemNameBtn.setEnabled(false);
					}
				}
				if(flag1==0){
					showMsg("导出失败！此工点中的所有孔都没有数据！");
				}else
					if(flag2==1){
						showMsg("导出成功！但此工点中存在没有数据的孔！");
					}
					else{
						showMsg("导出成功！");
					}
			}else
			{	// 弹出吐司，表示导出失败
				Toast.makeText(OutputMoreProUI.this, "导出失败！",
						Toast.LENGTH_LONG).show();
			}
			}
		}
	};

	/**
	 * 按钻孔导出按钮监听
	 */
	private OnClickListener outputByDrillClickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			/*
			 * 取出数据的过程： 1.通过三个参数选出唯一的钻孔编号的记录ID-base_id 2.通过base_id选出所有的观察记录的集合
			 * List<ObserveInfo> 3.解析观察记录集合，一个一个的将对应的文件输出（每个ob_id对应了一组数据，有可能为空）
			 */
			String filePath = file_edit.getText().toString().trim();
			if(projectNameSp.getSelectedItem()==null){
				showMsg("工程为空，导出失败！");
			}else{
			String _projectName = projectNameSp.getSelectedItem().toString();
			String _itemName = itemNameSp.getSelectedItem().toString();
			String _drillNum = drillNumSp.getSelectedItem().toString();

			BaseInfo baseInfo = baseInfoDao.selectBaseInfos(_projectName,
					_itemName, _drillNum);

			List<ObserveInfo> observeInfos = observeInfoDao
					.selectObserverInfos(baseInfo.getBaseId());
			if(BaseUtil.isEmpty(filePath,OutputMoreProUI.this)){
				if (observeInfos.size() < 1) {
					showMsg("导出失败！此孔没有数据！");
				} else {
					for (ObserveInfo observeInfo : observeInfos) {
						//A0方向、A180方向的观测数据都需导出
						//根据A0方向的ob_id导出相应修正数据的文件
						//设置中的更多导出功能中，导出A0θxoz（°）、B0θyoz（°）、A180θxoz（°）、B180θyoz（°）、
						//θA方向	、θB方向	、主滑累计位移、次滑累计位移图、合成方向累计位移
						if(observeInfo.getMeasurecount().equals(MEASURE_ANGLE_0)){
							int count=observeInfo.getCount();
							ObserveInfo observeInfo180=observeInfoDao.selectObserveInfo(MEASURE_ANGLE_180,baseInfo.getBaseId(),count);
							int ob_id0=observeInfo.getObserveId();//A0方向的ob_id
							int ob_id180=observeInfo180.getObserveId();//A180方向的ob_id
							
							List<DataInfo> dataInfoList0 = dataInfoDao.selectDataInfos(ob_id0);
							List<DataInfo> dataInfoList180 = dataInfoDao.selectDataInfos(ob_id180);
							List<CorrectDataInfo> correctDataInfoList = correctDataInfoDao.selectDataInfos(ob_id0);
							if(count==1){
								//如果是第一次观测，且有修正观测数据，设置三种位移值都为0
								if(correctDataInfoList.size()>0){
									for(CorrectDataInfo correctDataInfo:correctDataInfoList){
										correctDataInfo.setLx("0");
										correctDataInfo.setLy("0");
										correctDataInfo.setError("0");
									}
								}
							}
							JXLCreateMore jxCreateMore = new JXLCreateMore(filePath,baseInfo,
									observeInfo, dataInfoList0,dataInfoList180,correctDataInfoList,OutputMoreProUI.this);
							new Thread(jxCreateMore).start();
							outputByDrillNumBtn.setEnabled(false);
							showMsg("导出成功！");
						}
					}
					SharedPreferences sharedPreferences=getSharedPreferences("defaultFilePathMore",0);
					sharedPreferences.edit().putString("Path", filePath).commit();
				}
			}else
			{	// 弹出吐司，表示导出失败
				Toast.makeText(OutputMoreProUI.this, "导出失败！",
						Toast.LENGTH_LONG).show();
			}
			}
		}
	};

	/*
	 * 访问另一个Activity后返回的结果
	 * */
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if(FILE_RESULT_CODE == requestCode){
			Bundle bundle = null;
			if(data!=null&&(bundle=data.getExtras())!=null){
				file_edit.setText(bundle.getString("file"));
			}
		}
	}
	
	private void showMsg(String msg) {
		Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
	}

	/**
	 * 初始化三级联动菜单
	 */
	private void initMenu() {
		try {
			initMenu1();
			initMenu2();
			initMenu3();
		} catch (Exception e) {

		}
	}
    /*
     * 一级联动菜单
     * */
	private void initMenu1() throws Exception {
		// ---------------------初始化项目名称-start---------------------------
		Set<String> projectNameSet = new HashSet<String>(); // 保存不重复的项目名
		List<String> projectNames = new ArrayList<String>(); // 将Set集合转成List集合,从而放入适配器

		List<BaseInfo> allBaseInfo = this.baseInfoDao.selectBaseInfos();

		for (BaseInfo baseInfo : allBaseInfo) {
			projectNameSet.add(baseInfo.getProjectName());
		}
		for (String projectName : projectNameSet) {
			projectNames.add(projectName);
		}
		Collections.sort(projectNames);//顺序排列
		// 把数组导入到ArrayList中
		projectAdapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, projectNames);
		projectAdapter
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		// 设置下拉菜单的风格
		projectNameSp.setAdapter(projectAdapter);
		// 绑定适配器
		projectNameSp.setPrompt("请选择项目名");
	}
	/*
	 * 二级联动菜单
	 * */
	private void initMenu2() throws Exception {
		// **************************初始化二级联动菜单**start****************************
		String selectedProject = projectNameSp.getSelectedItem().toString();
		Set<String> allItemsSet = new HashSet<String>();
		List<String> allItemsList = new ArrayList<String>();
		List<BaseInfo> allItems = this.baseInfoDao
				.selectBaseInfos(selectedProject); // 通过选中的项目名来取得对应的记录，从而得出二级目录的数据
		for (BaseInfo baseInfo : allItems) {
			allItemsSet.add(baseInfo.getItemName());
		}
		for (String item : allItemsSet) {
			allItemsList.add(item);
		}
		Collections.sort(allItemsList);//顺序排列
		// 把数组导入到ArrayList中
		itemAdapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, allItemsList);
		itemAdapter
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		// 设置下拉菜单的风格
		itemNameSp.setAdapter(itemAdapter);
		// 绑定适配器
		itemNameSp.setPrompt("请选择工点名");
		// **************************初始化二级联动菜单**end*************************
	}
    /*
     * 三级联动菜单
     * */
	private void initMenu3() throws Exception {
		String selectedProject = projectNameSp.getSelectedItem().toString();
		String selectedItem = itemNameSp.getSelectedItem().toString();
		Set<String> allDrillSet = new HashSet<String>();
		List<String> allDrillList = new ArrayList<String>();

		List<BaseInfo> allDrills = this.baseInfoDao.selectBaseInfos(
				selectedProject, selectedItem);
		for (BaseInfo baseInfo : allDrills) {
			allDrillSet.add(baseInfo.getDrillNum());
		}
		for (String drillNum : allDrillSet) {
			allDrillList.add(drillNum);
		}
		Collections.sort(allDrillList);//顺序排列
		drillAdapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, allDrillList);
		drillAdapter
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		drillNumSp.setAdapter(drillAdapter);
		drillNumSp.setPrompt("请选择钻孔编号");
	}
	
	private String getSDPath(Context context) {
		String sdDir = null;
		boolean sdCardExist = Environment.getExternalStorageState().equals(
				android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
		if (sdCardExist) {
			sdDir = Environment.getExternalStorageDirectory().getAbsolutePath();// 获取跟目录
		} else {// 提示没检测到SD卡
			Toast.makeText(context, "没检测到SD卡！", Toast.LENGTH_SHORT).show();
		}
		return sdDir;
	}
	
	/**
	 * 点击空白处时，隐藏键盘
	 *
	 */
	@Override
    public boolean onTouchEvent(MotionEvent event){
        if(event.getAction()==MotionEvent.ACTION_DOWN){
            if(OutputMoreProUI.this.getCurrentFocus() != null && OutputMoreProUI.this.getCurrentFocus().getWindowToken() != null){
                    inputMethodManager.hideSoftInputFromWindow(OutputMoreProUI.this.getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
        return super.onTouchEvent(event);
    }

}
